#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

#define filename "log.txt" // 定义文件名常量

int main(){
    close(1);  // 关闭标准输出文件描述符(1)
    
    // 以创建、只写、清空方式打开文件,权限设置为666
    int fd = open(filename, O_CREAT|O_WRONLY|O_TRUNC, 0666);
    if(fd < 0){  // 打开文件失败则报错
        perror("open");
        return 1;
    }
    
    const char *msg = "hello linux\n";  // 定义要写入的字符串
    int cnt = 5;  // 循环次数
    
    // 循环写入5次字符串到文件
    while(cnt){
        // 由于前面关闭了标准输出,此时文件描述符1会被重定向到新打开的文件
        write(1, msg, strlen(msg));  
        cnt--;
    }
    
    close(fd);  // 关闭文件描述符
    
    return 0;
}
